from Type import *


class Integer(OrType):
    __doc__ = """int([x]) -> integer\nint(x, base=10) -> integer
            Convert a number or string to an integer, or return 0 if no arguments
            are given.  If x is a number, return x.__int__().  For floating-point
            numbers, this truncates towards zero.
            If x is not a number or if base is given, then x must be a string,
            bytes, or bytearray instance representing an integer literal in the
            given base.  The literal can be preceded by '+' or '-' and be surrounded
            by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.
            Base 0 means to interpret the base from the string as an integer literal.
            >>> int('0b100', base=0)
            4"""
    __class__ = RtType
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if len(args) == 2 and type(args[0]) == RtInt:
            self.digit: RtInt = args[0]

    def __int__(self):
        return self

    def __add__(self, other:'Integer') -> 'Integer':
        ret = Integer(self.digit + other.digit)
        return ret